﻿namespace Apq.Net {
    
    /// <summary>
    /// 远程文件信息,同时可保存下载过程中需要的信息
    /// </summary>
    public partial class RFileInfo {

		/// <summary>
		/// 添加下载过程中需要的列,LocalFile,ThreadD,FileCache,JinDu
		/// </summary>
		public void AddDownColumn()
		{
			this.RFile.Columns.Add("LocalFile");
			this.RFile.Columns.Add("JinDu", typeof(Apq.JinDu.JinDu));			//进度信息
			this.RFile.Columns.Add("ThreadC", typeof(System.Threading.Thread));	//下载线程(仅启动)
			this.RFile.Columns.Add("ManualResetEvent", typeof(System.Threading.ManualResetEvent));//文件下载完成以后Set

			this.RFileSection.Columns.Add("LocalFile");
			this.RFileSection.Columns.Add("FileCache", typeof(Apq.IO.FileCache));		//缓存区
			this.RFileSection.Columns.Add("SecNo", typeof(int));						//分块编号
			this.RFileSection.Columns.Add("JinDu", typeof(Apq.JinDu.JinDu));			//进度信息
			this.RFileSection.Columns.Add("ThreadD", typeof(System.Threading.Thread));	//下载线程
			this.RFileSection.Columns.Add("ManualResetEvent", typeof(System.Threading.ManualResetEvent));//分块下载完成以后Set
		}

		/// <summary>
		/// 远程文件信息表
		/// </summary>
		public partial class RFileDataTable
		{
			/// <summary>
			/// 通过指定的信息查找到第一个匹配的行
			/// </summary>
			/// <returns></returns>
			public RFileRow Find(string Url)
			{
				foreach (RFileRow dr in this.Rows)
				{
					if (Url.EndsWith(dr.Url))
					{
						return dr;
					}
				}
				return null;
			}
		}

		/// <summary>
		/// 文件分块信息表
		/// </summary>
		public partial class RFileSectionDataTable
		{
			/// <summary>
			/// 通过指定的信息查找到第一个匹配的行
			/// </summary>
			/// <returns></returns>
			public RFileSectionRow Find(string Url, int SecNo)
			{
				foreach (RFileSectionRow dr in this.Rows)
				{
					if (Url.EndsWith(dr.Url) && SecNo.Equals(dr["SecNo"]))
					{
						return dr;
					}
				}
				return null;
			}
		}
    }
}
